﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;//biblioteca do sql
using System.Data;//para usa de procedure
using Sistema.Modelo;//pacote modelo
using Sistema.Dao;//pacote Dao para converter mensagem

namespace Sistema.Dao
{
    class BairroDao
    {
        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarBairro(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Bairro ;";
                stringconecao[1] = "SELECT * FROM Bairro WHERE Bairro_Nome like '%" + Busca + "%';";
                stringconecao[2] = "SELECT * FROM Bairro WHERE Bairro_Nome like '" + Busca + "%'";
                stringconecao[3] = "SELECT * FROM Bairro WHERE Bairro_Nome = '" + Busca + "'";
                stringconecao[4] = "SELECT * FROM Bairro WHERE Bairro_Codigo = '" + Busca + "'";
                
                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
             }
             catch (Exception ex)
             {
                Mensagem = "Erro na execução com o banco de dados"+"\n" + Convert.ToString(ex);
             }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoBairro(BairroMod a, int Procedimento)
        {   try{
            int Bairro_Codigo = Convert.ToInt16(null);
            int Cidade_Codigo = Convert.ToInt16(null);
            String Bairro_Nome = null;
            DateTime Bairro_Data_Cadastro = Convert.ToDateTime(null);
            int Operacao = Procedimento;
            int NovoCodigo = Convert.ToInt16(null);
            int Retorno = 0;
           

            if(Procedimento == 1){//Cadastrar
                Cidade_Codigo = a.Cidade_Codigo;
                Bairro_Nome = a.Bairro_Nome;
                
                 }
                ////////////////////
            else if(Procedimento ==2){//Alterar
                Bairro_Codigo = a.Bairro_Codigo;
                Cidade_Codigo = a.Cidade_Codigo;
                Bairro_Nome = a.Bairro_Nome;
            }
                ////////////////////
            else if(Procedimento == 3){//Excluir
                Bairro_Codigo = a.Bairro_Codigo;
                Cidade_Codigo = a.Cidade_Codigo;
                Bairro_Nome = a.Bairro_Nome;
            }
                ////////////////////

            StringConecao con = new StringConecao();
            string sqlcon = con.getconecao();
            SqlConnection sqlconn = new SqlConnection(sqlcon);
            sqlconn.Open();
            string mSQL;//variavel passa o nome da procidore
            mSQL = "SP_Update_Bairro";
            SqlCommand crm = new SqlCommand(mSQL, sqlconn);

            crm.CommandType = CommandType.StoredProcedure;
            crm.Parameters.Add("@Bairro_Codigo", SqlDbType.VarChar).Value = Bairro_Codigo;
            crm.Parameters.Add("@Cidade_Codigo", SqlDbType.VarChar).Value = Cidade_Codigo;
            crm.Parameters.Add("@Bairro_Nome", SqlDbType.VarChar).Value = Bairro_Nome;
          //  crm.Parameters.Add("@Bairro_Data_Cadastro", SqlDbType.VarChar).Value = Bairro_Data_Cadastro;
            crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Operacao;
            crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = NovoCodigo;
            crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

            var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
            returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

            crm.ExecuteNonQuery();
            Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString()/*converte a mensagem recebida*/);//recebendo a variavel
            sqlconn.Close();
            }catch (Exception ex){
              Mensagem = "Erro na execução com o banco de dados"+"\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///
       
    }
}
